package com.sdhs.costcontrol.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.sdhs.businessfile.domain.BusinessFile;
import com.sdhs.common.annotation.Excel;
import com.sdhs.common.core.domain.BaseEntity;

import lombok.Data;

/**
 * 变更管理对象 gc_control_change_management
 *
 * @author wanglei
 * @date 2025-03-12
 */
@Data
public class GcControlChangeManagement extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 变更主键 */
    private Long id;

    /** 关联项目id */
    @Excel(name = "关联项目id")
    private Long projectId;

    /** 变更编号 */
    @Excel(name = "变更编号")
    private String changeNumber;

    /** 变更名称 */
    @Excel(name = "变更名称")
    private String changeName;

    /** 变更类型 */
    @Excel(name = "变更类型")
    private String changeType;

    /** 变更等级 */
    @Excel(name = "变更等级")
    private String changeGrade;

    /** 变更金额 */
    @Excel(name = "变更金额")
    private BigDecimal changeAmount;

    /** 变更日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "变更日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date changeDate;

    /** 变更内容 */
    @Excel(name = "变更内容")
    private String changeContent;

    /** 提交人姓名 */
    @Excel(name = "提交人姓名")
    private String submitNickName;

    /** 提交人用户名 */
    @Excel(name = "提交人用户名")
    private String submitUserName;

    /** 提交时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date submitTime;

    /** 审批状态 */
    @Excel(name = "审批状态")
    private String approvalStatus;

    /** 流程实例ID */
    @Excel(name = "流程实例ID")
    private String instanceId;

    /** 创建人 */
    @Excel(name = "创建人")
    private String creater;

    /** 修改人 */
    @Excel(name = "修改人")
    private String updater;

    /** 是否删除，删除标记（0正常 1删除） */
    @Excel(name = "是否删除，删除标记", readConverterExp = "0=正常,1=删除")
    private String isDelete;

    /** 合同id */
    @Excel(name = "合同id")
    private String contractId;

    /** 项目编号 */
    @Excel(name = "项目编号")
    private String projectNumber;

    /** 项目名称 */
    @Excel(name = "项目名称")
    private String projectName;

    /** 合同编号 */
    @Excel(name = "合同编号")
    private String contractNumber;

    /** 合同名称 */
    @Excel(name = "合同名称")
    private String contractName;

    private List<BusinessFile> fileList;

    private List<GcControlChangeManageList> gcControlPlanList;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("projectId", getProjectId())
            .append("changeNumber", getChangeNumber())
            .append("changeName", getChangeName())
            .append("changeType", getChangeType())
            .append("changeGrade", getChangeGrade())
            .append("changeAmount", getChangeAmount())
            .append("changeDate", getChangeDate())
            .append("changeContent", getChangeContent())
            .append("submitNickName", getSubmitNickName())
            .append("submitUserName", getSubmitUserName())
            .append("submitTime", getSubmitTime())
            .append("approvalStatus", getApprovalStatus())
            .append("instanceId", getInstanceId())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .append("creater", getCreater())
            .append("updater", getUpdater())
            .append("isDelete", getIsDelete())
            .append("contractId", getContractId())
            .toString();
    }
}
